package com.clps.algorithm.chapter13.生成匹配的括号;

import java.util.LinkedList;
import java.util.List;

/**
 * 输入一个正整数n，请输出所有包含n个左括号和n个右括号的组合，要求每个组合的左右括号匹配。例如，当n等于2时，有2个符合条件的括号组合，分别是"(())"和"()()"
 */
public class demo01 {

    public static void main(String[] args) {

    }

    public List<String> generaterParentheis(int n){
        List<String> result = new LinkedList<>();
        helper(n,n,"",result);
        return  result;
    }

    private void helper(int left, int right, String parenthsis, List<String> result) {
        if(left == 0 && right == 0){
            result.add(parenthsis);
            return;
        }

        if(left >0){
            helper(left -1,right,parenthsis + "(",result);
        }

        if(left<right){
            helper(left,right-1,parenthsis+")",result);
        }
    }
}
